/*
 * @lc app=leetcode.cn id=209 lang=javascript
 *
 * [209] 长度最小的子数组
 */

// @lc code=start
/**
 * @param {number} target
 * @param {number[]} nums
 * @return {number}
 */
// 大于就右移,右移完，检测总数是否大于等于target,
// 因为有可能一下加入的数据很大，需要循环检测是否大于等于target
// 如果大于等于就进行长度比较,并右移左指针。
// 注意到结束也没有大于等于的情况，那就要返回0
var minSubArrayLen = function(target, nums) {
  let n = nums.length
  let l = 0
  let r = -1
  let total = 0
  let res = nums.length + 1
  while (r < n) {
    total += nums[++r]
    while (total >= target) {
      res = res > (r - l + 1) ? r - l + 1 : res
      total -= nums[l++]
    }
  }
  return res === nums.length + 1 ? 0 : res
};
// @lc code=end

